package team.group.exam.biz;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import team.group.exam.entity.PaperCondition;
import team.group.exam.entity.TbPaper;
import team.group.exam.entity.TbPaperBank;
import team.group.exam.entity.TbQuestionbank;

public interface IPaperBiz {
      
	  /**
	   * 随机生成试卷
	   */
	  List addRandomPaper(int singleSize,TbPaper paper);
	  /**
	   * 增加试卷
	   */
	  void addPaper(TbPaper paper);
	  /**
	  * 删除试卷
	  */
      void deletePaper(int id);
	  /**
	   * 按类型查询试卷
	   */
      List<TbPaper> getPaperByType(String type);
	   /**
	    * 查询所有的试题
	    */
      List<TbQuestionbank> getAllTitle();
      /**
       * 查询当前试卷
       */
      List<TbQuestionbank> getPaper();
      /**
       * 通过ID获取当前试卷对象
       */
      TbPaper getById(int id);
      /**
       * 添加试卷，题目关系表
       */
      void addPaperTitle(TbPaperBank paperBank);
      
      /**
       * 得到试卷关系表的列表
     * @param paper 
       */
     List<TbPaperBank> getTbPaperBankList(TbPaper paper,int currentPage,int pageSize);
     /**
      * 得到试卷列表
      */
     List<TbPaper> getPaperName(PaperCondition paperCondition);
     /**
      * 得到试卷的总页数
      * @param pageSize
      * @return
      */
	 int getTotalPage(TbPaper paper,int pageSize);
	 /**
	  * 得到试卷的所有题目，不分页
	 * @param paper 
	  * @return
	  */
	List<TbPaperBank> getAllTitleNopage(TbPaper paper);
	/**
	 * 得到试卷正确答案的列表
	 */
	List<String> getAllRightAnswer(TbPaper paper);
	
	/**
	 * 得到用户正确值
	 * @param paper
	 * @param request
	 * @return
	 */
	public int getScore(TbPaper paper,HttpServletRequest request);
	
	/**
	 * 获得错误题目列表
	 * @param paper
	 * @param request
	 * @return
	 */
	public List getErrorQuestSet(TbPaper paper,HttpServletRequest request);
	
	public Map<String,String> getRightAnswerMap(TbPaper paper);
	
	public int getScore(TbPaper paper,HttpServletRequest request,int state);
	/**
	 * 将用户的ID和分数存在数据库中
	 */
	public void addScoreAndUserId(TbPaper paper);
	
	/**
	 * 获取所有的试卷类型
	 * @return
	 */
	List<String> getPaperType();
}
